package com.sfx.shortLink.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sfx.shortLink.dao.entity.ShortLinkDO;
import com.sfx.shortLink.dto.req.ShortLinkCreateReqDO;
import com.sfx.shortLink.dto.req.ShortLinkPageReqDTO;
import com.sfx.shortLink.dto.req.ShortLinkUpdateReqDTO;
import com.sfx.shortLink.dto.resp.ShortLinkCreateRespDTO;
import com.sfx.shortLink.dto.resp.ShortLinkGroupCountRespDTO;
import com.sfx.shortLink.dto.resp.ShortLinkPageRespDTO;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.util.List;

public interface IShortLinkService extends IService<ShortLinkDO> {

    /**
     * 新增短链接
     *
     * @param requestParam 生成短链接请求参数
     * @return 返回
     */
    ShortLinkCreateRespDTO createShortLink1(ShortLinkCreateReqDO requestParam);

    /**
     * 分页查询
     *
     * @param shortLinkPageReqDTO 分页请求参数
     * @return 返回分页结果
     */
    IPage<ShortLinkPageRespDTO> shortLinkPage(ShortLinkPageReqDTO shortLinkPageReqDTO);


    /**
     * 获取到分组短链接数量
     *
     * @param requestParam 请求参数
     * @return 返回分组内短链接的数量
     */
    List<ShortLinkGroupCountRespDTO> getGroupShortLinkCount(List<String> requestParam);


    /**
     * 修改短链接
     *
     * @param requestParam 请求参数
     */
    void updateShortLink(ShortLinkUpdateReqDTO requestParam);

    /**
     * 短链接跳转到原始链接
     *
     * @param shortUri 短链接后缀
     * @param request  请求
     * @param response 响应
     */
    void restoreUrl1(String shortUri, HttpServletRequest request, HttpServletResponse response);

}